<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Release 4.8: Registering DPL Secondary Keys</title>
    <link rel="stylesheet" href="gettingStarted.css" type="text/css" />
    <meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
    <link rel="start" href="index.html" title="Berkeley DB Programmer's Reference Guide" />
    <link rel="up" href="upgrade_4_8_toc.html" title="Chapter 45. Upgrading Berkeley DB 4.7 applications to Berkeley DB 4.8" />
    <link rel="prev" href="upgrade_4_8_toc.html" title="Chapter 45. Upgrading Berkeley DB 4.7 applications to Berkeley DB 4.8" />
    <link rel="next" href="upgrade_4_8_mpool.html" title="Release 4.8: Minor Change in Behavior of DB_MPOOLFILE-&gt;get" />
  </head>
  <body>
    <div class="navheader">
      <table width="100%" summary="Navigation header">
        <tr>
          <th colspan="3" align="center">Release 4.8: Registering DPL Secondary Keys</th>
        </tr>
        <tr>
          <td width="20%" align="left"><a accesskey="p" href="upgrade_4_8_toc.html">Prev</a> </td>
          <th width="60%" align="center">Chapter 45. Upgrading Berkeley DB 4.7 applications to Berkeley DB 4.8</th>
          <td width="20%" align="right"> <a accesskey="n" href="upgrade_4_8_mpool.html">Next</a></td>
        </tr>
      </table>
      <hr />
    </div>
    <div class="sect1" lang="en" xml:lang="en">
      <div class="titlepage">
        <div>
          <div>
            <h2 class="title" style="clear: both"><a id="upgrade_4_8_dpl"></a>Release 4.8: Registering DPL Secondary Keys</h2>
          </div>
        </div>
      </div>
      <p>
    Entity subclasses that define secondary keys must now be registered
    prior to storing an instance of the class. This can be done in two
    ways: 
</p>
      <div class="itemizedlist">
        <ul type="disc">
          <li>
            <p>
            The <code class="methodname">EntityModel.registerClass()</code> method
            may be called to register the subclass before opening the
            entity store.
        </p>
          </li>
          <li>
            <p>
            The <code class="methodname">EntityStore.getSubclassIndex()</code>
            method may be called to implicitly register the subclass after
            opening the entity store.
        </p>
          </li>
        </ul>
      </div>
      <p>
    Failure to register the entity subclass will result in an
    <code class="classname">IllegalArgumentException</code> the first time an
    attempt is made to store an instance of the subclass. An exception will
    not occur if instances of the subclass have previously been stored,
    which allows existing applications to run unmodified in most cases.
</p>
      <p>
    This behavioral change was made to increase reliability. In several
    cases, registering an entity subclass has been necessary as a
    workaround. The requirement to register the subclass will ensure that
    such errors do not occur in deployed applications.
</p>
    </div>
    <div class="navfooter">
      <hr />
      <table width="100%" summary="Navigation footer">
        <tr>
          <td width="40%" align="left"><a accesskey="p" href="upgrade_4_8_toc.html">Prev</a> </td>
          <td width="20%" align="center">
            <a accesskey="u" href="upgrade_4_8_toc.html">Up</a>
          </td>
          <td width="40%" align="right"> <a accesskey="n" href="upgrade_4_8_mpool.html">Next</a></td>
        </tr>
        <tr>
          <td width="40%" align="left" valign="top">Chapter 45. Upgrading Berkeley DB 4.7 applications to Berkeley DB 4.8 </td>
          <td width="20%" align="center">
            <a accesskey="h" href="index.html">Home</a>
          </td>
          <td width="40%" align="right" valign="top"> Release 4.8: Minor Change in Behavior of DB_MPOOLFILE-&gt;get</td>
        </tr>
      </table>
    </div>
  </body>
</html>
